<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>

</head>

<body>
  <script>
    // 🔴正则表达式的创建方式。
    // 1. let reg = new RegExp(/表达式/)
    // 2. let reg = /表达式/
    let reg11 = new RegExp(/hello/)
    let reg12 = /world/
    console.log(reg11.test('hello world'), reg12.test('hello jack')); // true false
    // 以上两种方式什么时候用？ 如果你的正则表达式来源一个变量，那么就只能用new RegExp()
    let str11 = 'jack'
    let reg13 = new RegExp(str11)
    console.log(reg13.test('hello rose'));

    // 🔴正则的test() 方法

    // 🔴字符串的math() replace()
    let reg21 = new RegExp(str11, 'g')
    let str21 = 'jack | jack'
    // 如果正则表达式没有带g修饰符，那么只会match或者replace第一个。
    let res21 = str21.match(reg21)
    console.log(res21);
    // 参数1代表要被替换的字符串 ，参数2代表替换成什么字符串
    let str22 = str21.replace(reg21, 'rose')
    console.log(str22);



    // 🔴修饰符 i代表大小写不敏感 g代表global全局的

    // 🔴字符类
    // \d数字
    // \D
    // \s 空格 制表符 换行
    // \S
    // \w 字母 数字 下划线
    // \W
    // . 任意字符除了\n
    let str31 = 'hello123 54world'
    console.log(str31.match(/\d/g));


    // 📒练习 'htmlCSS3javascript'
    // 1. 匹配一段文字中的CSS3
    let str41 = 'htmlCSS3javascript'
    console.log(str41.match(/CSS\d/gi));
    // 2. 将'023-53440855'中的'-'去掉
    console.log('023-53440855'.match(/\d/g).join(''));


    // 🔴锚点符 ^匹配文本开头 $匹配文本末尾
    let reg51 = /^\d\s\d$/g
    console.log('1 2'.match(reg51));
    // 📒练习
    // 匹配一个时间类似 18:22
    let reg52 = /^\d\d:\d\d$/g
    console.log('18:22'.match(reg52));



    // 🔴 [] 集合 表示[]中的任意一个都行
    let reg61 = /[abcd]/g
    let str61 = 'abcfghi'
    console.log(str61.match(reg61));

    // 🔴 [] 范围 [0-9] [a-z] [A-Z]


    // 🔴 [^] 排除
    let reg71 = /[^abcd]/g
    let str71 = 'abcfghi'
    console.log(str71.match(reg71));

    // 🔴 量词 +表示一个或多个 ?表示0个或1个 {n}可以指定任意多个。比如{3, } {3,6}
    let reg81 = /\d{11,}/g
    let str81 = '1234567890899'
    console.log(str81.match(reg81));

    // 🔴 转义符 \反斜杠  这些需要转义[ \ ^ $ . | ? * + ( ) ]
    let reg91 = /\./g
    console.log('8383.34343'.match(reg91));

    // 📒练习
    // 写一个正则匹配HTML标签 strong b h4
    let reg98 = /<\/?\w+>/g
    console.log('<h1>hello world</h1>'.match(reg98));

    // 🔴 捕获组 ()
    let reg99 = /(\w+\.)+(\w+)/
    let str99 = 'www.baidu.com'
    console.log(str99.match(reg99));
    console.log(RegExp.$1, RegExp.$2);


  </script>
</body>

</html>